package file;

import java.io.File;
import java.io.FileFilter;

/**
 * 有条件的获取一个目录中的部分子项
 */
public class ListFilesDemo2 {
    public static void main(String[] args) {
        /**
         * 获取File目录中含有字母s的所有子项
         *
         * Filter 过滤器
         * accept 接受
         * contains 包含
         *
         */
        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                String name = pathname.getName();
                return name.contains("s");
            }
        };

        File dir = new File("java-study-se/src/file");
        if(dir.isDirectory()){
            /**
             * File重写 的File[] listFiles(FileFilter filter)
             * 该方法会返回当前File对象表识的该目录中给定所有满足的过滤器要求的子项
             * listFiles方法内部会将这个目录中每一个子项所对应的File对象逐一传给过滤器filter的
             * accept方法 并最终将accept方法返回为true的所有子项返回
             */
            File[] subs = dir.listFiles(filter);
            System.out.println("共有："+subs.length+"个子项");
            for (int i = 0; i < subs.length; i++) {
                System.out.println(subs[i].getName());
            }
        }


    }
}
